python - 查找正在导入的 python 模块
全部标签 我想知道如何从模块访问类变量moduleEntitydeffoo#puts@@rulesendendclassPersonincludeEntityattr_accessor:id,:name@@rules=[[:id,:int,:not_null],[:name,:string,:not_null]]endclassCarincludeEntityattr_accessor:id,:year@@rules=[[:id,:string,:not_null],[:year:,:int,:not_null]]endp=Person.newc=Car.newp.foo#[[:id,:int,
我有一个散列数组,我需要在其中根据散列之间的一个匹配值查找和存储匹配项。a=[{:id=>1,:name=>"Jim",:email=>"jim@jim.jim"},{:id=>2,:name=>"Paul",:email=>"paul@paul.paul"},{:id=>3,:name=>"Tom",:email=>"tom@tom.tom"},{:id=>1,:name=>"Jim",:email=>"jim@jim.jim"},{:id=>5,:name=>"Tom",:email=>"tom@tom.tom"},{:id=>6,:name=>"Jim",:email=>"jim
Math中的方法可以像类方法一样调用:Math.cos(0)但也可以是include-d像实例方法:includeMathcos(0)相比之下,以下模块只能以一种方式调用,而不能以另一种方式调用:moduleFoodefbarendendFoo.bar()#NoMethodErrorforthiscallincludeFoobar()#butthiscallisfine单例方法:moduleFoodefself.barendendFoo.bar()#thiscallisfineincludeFoobar()#butnotthisone知道如何编写像Math这样的模块吗?
我正在用ruby开发一个文本编辑器,我需要使用用户提供的正则表达式模式来支持“查找”功能。这是一个简单(熟悉的)用例:JoeUseriseditingatextfile,andhaspositionedthecursorsomewhereinthemiddleofthefile.Hewantstosearchbackwardsfromthecurrentcursorlocationforthenearestsubstringmatchinganarbitraryregularexpression.我认为这个问题相当于将用户的模式应用于文件中光标位置之前的整个字符串。当然,我可以从文
场景#1:在下面的示例中,putsPost::User.foo行打印foo。换句话说,Post::User返回一个全局的User常量。classUserdefself.foo"foo"endendclassPostputsPost::User.fooend#=>warning:toplevelconstantUserreferencedbyPost::User#=>foo场景#2:第二个示例会引发错误,因为未找到常量。moduleUserdefself.foo"foo"endendmodulePostputsPost::User.fooend#=>uninitializedconsta
我想选择一个数组中符合特定条件的前10个元素,而不必遍历整个数组。我知道find给我第一个元素。例如,下面的代码给出了第一个大于100的素数:require'prime'putsPrime.find{|p|p>100}#=>101有没有办法得到前10个大于100的素数? 最佳答案 在Ruby2.0+中你可以这样写:require'prime'Prime.lazy.select{|p|p>100}.take(10).to_a#=>[101,103,107,109,113,127,131,137,139,149]
有没有什么方法可以在classQux中访问baz_method而无需首先提及模块namespace?当有很多嵌套模块时,代码看起来不干净。moduleFoomoduleBarmoduleBazclassQuxdefself.qux_methodFoo::Bar::Baz.baz_methodendenddefself.baz_methodendendendend 最佳答案 常量首先在词法封闭模块中查找,然后在继承链中向上查找。moduleFoomoduleBarmoduleBazclassQuxdefself.qux_methodB
为什么这个模块的initialize方法在包含在Temp类中时没有被调用?moduleTempdefinitializep"asdasd"endendclassSwapincludeTempdefinitializep"minclass"endends=Swap.newminclass 最佳答案 Swap类覆盖了Temp模块中定义的initialize方法。当Ruby试图找到一个方法时,它会从最派生的类/模块开始搜索继承层次结构。在这种情况下,搜索在Swap类结束。重写的方法不会被调用,除非您使用super显式调用它们。例如clas
假设我有一个包含3个字符串的数组:["Extratvinbedroom","Extratvinlivingroom","Extratvoutsidetheshop"]如何找到所有字符串共有的最长字符串? 最佳答案 这是一种ruby风格的实现方式。但是,如果您有一堆字符串或者它们很长,您应该使用更高级的算法:deflongest_common_substr(strings)shortest=strings.min_by&:lengthmaxlen=shortest.lengthmaxlen.downto(0)do|len|0.upto
我用Ruby写了一个方法来找到一个文本的所有循环组合x="ABCDE"(x.length).timesdoputsxx=x[1..x.length]+x[0].chrend有没有更好的方法来实现这个? 最佳答案 这是另一种方法。str="ABCDE"(0...str.length).collect{|i|(str*2)[i,str.length]}我使用了范围和#collect并假设您想要对字符串执行其他操作(而不仅仅是打印它们)。 关于ruby-如何在Ruby中查找字符串的所有循环?,